package org.ttitfly.zuoyue.entity.room;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.apache.commons.lang.builder.ToStringBuilder;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.ttitfly.ttcore.entity.IdEntity;
import org.ttitfly.ttcore.entity.system.Dictionary;
import org.ttitfly.zuoyue.entity.attachment.Attachment;
import org.ttitfly.zuoyue.enums.RoomDataType;


/**
 * 用户.
 * 
 * 使用JPA annotation定义ORM关系. 使用Hibernate annotation定义JPA 1.0未覆盖的部分.
 * 
 * @author mhb
 */
@Entity
// 表名与类名不相同时重新定义表名.
@Table(name = "room_project")
// 默认的缓存策略.
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class RoomProject extends IdEntity{
	
	
		
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	// 项目编号,自动生成
	@Column(name = "biz_number")
	private String bizNumber;

	// 项目名称
	@Column(name = "name")
	private String name;

	// 项目地址
	@Column(name = "address")
	private String address;

	// 联系电话
	@Column(name = "tel_phone")
	private String telphone;

	// 经度
	@Column(name = "lon")
	private String lon;

	// 纬度
	@Column(name = "lat")
	private String lat;

	// 是否新建
	@Column(name = "new_create")
	private String newCreate;

	// 关联编码
	@Column(name = "related_code")
	private String relatedCode;

	
	// 站名
	@Column(name = "site_name")
	private String siteName;

	

	// 主体信号
	@Column(name = "main_signal")
	private String mainSignal;

	// 电梯信号
	@Column(name = "lift_signal")
	private String liftSignal;

	// 电梯数量
	@Column(name = "lift_number")
	private Integer liftNumber;

	// 电梯最高层数
	@Column(name = "lift_top_floor")
	private Integer liftTopFloor;

	// 地下车库信号
	@Column(name = "under_park_signal")
	private String underParkSignal;

	// 独立地下车库数量
	@Column(name = "under_park_number")
	private Integer underParkNumber;

	// 地下车库车位数量
	@Column(name = "under_park_car_number")
	private Integer underParkCarNumber;

	// 解决手段
	@Column(name = "resolve_method")
	private String resolveMethod;

	// 预计覆盖面积(平方米)
	@Column(name = "cover_area")
	private Float coverArea;

	// 紧急程度
	@Column(name = "emergency_level")
	private String emergencyLevel;

	// 附件名称/路径
	@Column(name = "path")
	private String path;

	// 备注
	@Column(name = "remark", length = 2048)
	private String remark;

	// ==可复选====

	// 网络类型（可复选）
	@Column(name = "net_type")
	private String netType;

	// 解决内容（可复选）
	@Column(name = "resolve_content")
	private String resolveContent;
	
	@Column(name = "create_time")
	private Date createTime = new Date();
	
	@Column(name = "project_term")
	private String projectTerm;
	
	@Column(name = "share_status")
	private String shareStatus;
	
	// 站号
	@Column(name = "site_number")
	private String siteNumber;

	// 建设类型
	@Column(name = "build_type")
	private String buildType;
	
	// BSC
	@Column(name = "bsc")
	private String bsc;
	
	
	// 站号
	@Column(name = "gsm_site_number")
	private String gsmSiteNumber;

	// 建设类型
	@Column(name = "gsm_build_type")
	private String gsmBuildType;
	
	// BSC
	@Column(name = "gsm_bsc")
	private String gsmBsc;
	
	//GSM期数
	@Column(name="gsm_term")
	private String gsmTerm;
	
	// 站号
	@Column(name = "td_site_number")
	private String tdSiteNumber;

	// 建设类型
	@Column(name = "td_build_type")
	private String tdBuildType;
	
	// BSC
	@Column(name = "td_rnc")
	private String tdRnc;
	
	//TD期数
	@Column(name="td_term")
	private String tdTerm;
	
	// 站号
	@Column(name = "wlan_site_number")
	private String wlanSiteNumber;

	// 建设类型
	@Column(name = "wlan_build_type")
	private String wlanBuildType;
	
	// BSC
	@Column(name = "wlan_ac")
	private String wlanAc;
	
	//WLAN期数
	@Column(name="wlan_term")
	private String wlanTerm;
	
	// 站号
	@Column(name = "lte_site_number")
	private String lteSiteNumber;

	// 建设类型
	@Column(name = "lte_build_type")
	private String lteBuildType;
	
	// BSC
	@Column(name = "lte_bsc")
	private String lteBsc;
	
	//LTE期数
	@Column(name="lte_term")
	private String lteTerm;
	
	//直放站材料
	@Column(name="repeater_material")
	private String repeaterMaterial;
	
	//直放站施工费用
	@Column(name="repeater_build_cost")
	private String repeaterBuildCost;
	

	//直放站施工厂家
	@Column(name="repeater_build_factory")
	private String repeaterBuildFactory;
	

	//动力配套
	@Column(name="horse_power_suit")
	private String horsePowerSuit;
	
	public Float getRepeaterBudgetTotal() {
		return repeaterBudgetTotal;
	}

	public void setRepeaterBudgetTotal(Float repeaterBudgetTotal) {
		this.repeaterBudgetTotal = repeaterBudgetTotal;
	}

	public String getItemFinishedTime() {
		return itemFinishedTime;
	}

	public void setItemFinishedTime(String itemFinishedTime) {
		this.itemFinishedTime = itemFinishedTime;
	}

	//直放站预算总金额
	@Column(name="repeater_budget_total")
	private Float repeaterBudgetTotal;
	
	public String getHorsePowerSuit() {
		return horsePowerSuit;
	}

	public void setHorsePowerSuit(String horsePowerSuit) {
		this.horsePowerSuit = horsePowerSuit;
	}

	
	public String getRepeaterMaterial() {
		return repeaterMaterial;
	}

	public void setRepeaterMaterial(String repeaterMaterial) {
		this.repeaterMaterial = repeaterMaterial;
	}

	public String getRepeaterBuildCost() {
		return repeaterBuildCost;
	}

	public void setRepeaterBuildCost(String repeaterBuildCost) {
		this.repeaterBuildCost = repeaterBuildCost;
	}

	public String getRepeaterBuildFactory() {
		return repeaterBuildFactory;
	}

	public void setRepeaterBuildFactory(String repeaterBuildFactory) {
		this.repeaterBuildFactory = repeaterBuildFactory;
	}


	public String getTdTerm() {
		return tdTerm;
	}

	public String getWlanTerm() {
		return wlanTerm;
	}

	public String getLteTerm() {
		return lteTerm;
	}


	public void setTdTerm(String tdTerm) {
		this.tdTerm = tdTerm;
	}

	public void setWlanTerm(String wlanTerm) {
		this.wlanTerm = wlanTerm;
	}

	public void setLteTerm(String lteTerm) {
		this.lteTerm = lteTerm;
	}

	// ====以下是关联表=====
	

	
	@Column(name = "complaint")
	private String complaint ;
	
	// 区域性质 （关联表）
	private Dictionary areaType;

	// 所属区域(关联表)
	private Dictionary area;

	// 项目分类(关联表)
	private Dictionary projectType;

	// 期数(关联表)
	private Dictionary term;
	
	
	// 期数(关联表)
	//private Dictionary gsmTerm;
	/*
	// 期数(关联表)
	private Dictionary tdTerm;
	
	// 期数(关联表)
	private Dictionary wlanTerm;
	
	// 期数(关联表)
	private Dictionary lteTerm;*/
	

	// 建议厂家(关联表)
	private Dictionary factory;
	
	
	// 厂家(关联表)
	//@Column(name = "manu_facturer")
	//private String manufacturer;

	// 上传类别(关联表，并可以复选)
	@Column(name = "upload_type")
	private String uploadType;
	
	//数据类型，保留，疑难，正常库
	@Enumerated(EnumType.STRING)
    private RoomDataType dataType = RoomDataType.NORMAL;
	
	@Column(name = "process_instance_id")
	private int processInstanceId;
	
	@OneToMany
	@JoinTable(name = "ROOM_PROJECT_ATTACHMENT", joinColumns = @JoinColumn(name = "ROOM_PROJECT_ID"), inverseJoinColumns = @JoinColumn(name = "ATTACHMENT_ID"))   
	private List<Attachment> attachments = new ArrayList<Attachment>();
	
	// 开工申请
	@Column(name = "zyw_number")
	private String zywNumber;
	
	//前期落实
	@Column(name = "practical_early")
	private Boolean practicalEarly;
	
	
	
	// 基站地址
	@Column(name = "site_address")
	private String siteAddress;
	
	// 是否土建
	@Column(name = "need_civil")
	private Boolean needCivil;
	
	// 土建费用
	@Column(name = "civil_cost")
	private String civilCost;
	
	// 土建施工单位
	@Column(name = "civil_build_unit")
	private String civilBuildUnit;
	
	public String getCivilBuildUnit() {
		return civilBuildUnit;
	}

	public void setCivilBuildUnit(String civilBuildUnit) {
		this.civilBuildUnit = civilBuildUnit;
	}

	// 集成材料费用
	//@Column(name = "material_cost")
	//private Float materialCost;
	
	// 施工费用
	//@Column(name = "construction_cost")
	//private Float constructionCost;
	
	// 施工单位
	//@Column(name = "construction_unit")
	//private String constructionUnit;
	
	// 美化体类型
	@Column(name = "bodycare_type")
	private String bodycareType;
	
	// 美化体厂家【美化体施工单位】
	@Column(name = "bodycare_factory")
	private String bodycareFactory;
	
	// 美化体费用
	@Column(name = "bodycare_cost")
	private String bodycareCost;
	
	// 传输是否新建
	@Column(name = "new_transfer")
	private Boolean newTransfer;
	
	//工单号1
	@Column(name = "workMenu_NumberOne")
	private String workMenuNumberOne ;
	
	//工单号2
	@Column(name = "workMenu_NumberTwo")
	private String workMenuNumberTwo;
	
	//地址编码
	@Column(name = "address_code")
	private String addressCode;
	
	// 投资派工单编号
	@Column(name = "invest_dispatch_order")
	private String investDispatchOrder;
	
	// 传输项目名称
	@Column(name = "transfer_project_name")
	private String transferProjectName;
	
	// 传输项目编号
	@Column(name = "transfer_project_number")
	private String transferProjectNumber;
	
	// 传输mis编号
	@Column(name = "transfer_mis_number")
	private String transferMisNumber;
	
	// 传输项目归属
	@Column(name = "transfer_project_belong")
	private String transferProjectBelong;
	
	// 传输建设规模
	@Column(name = "transfer_build_scale")
	private String transferBuildScale;
	
	// 传输费用预算
	@Column(name = "transfer_budget")
	private Float transferBudget;
	
	// 甲供材料【传输开工申请】
	@Column(name = "transfer_owner_material")
	private String transferOwnerMaterial;
	
	public String getTransferMaterial() {
		return transferMaterial;
	}

	public void setTransferMaterial(String transferMaterial) {
		this.transferMaterial = transferMaterial;
	}

	// 甲供材料【开工申请】
	private String transferMaterial;
	
	//所有甲供材料费用
	@Column(name = "alltransfer_material_cost")
	private String allTransferMaterialCost;
	
	//有线管线项目编号
	@Column(name = "wire_pileline_Number")
	private String wirePileLineNumber;
	
	public String getWirePileLineNumber() {
		return wirePileLineNumber;
	}

	public void setWirePileLineNumber(String wirePileLineNumber) {
		this.wirePileLineNumber = wirePileLineNumber;
	}

	public String getWireDeviceNumber() {
		return wireDeviceNumber;
	}

	public void setWireDeviceNumber(String wireDeviceNumber) {
		this.wireDeviceNumber = wireDeviceNumber;
	}

	public String getWireLineMisCode() {
		return wireLineMisCode;
	}

	public void setWireLineMisCode(String wireLineMisCode) {
		this.wireLineMisCode = wireLineMisCode;
	}

	public String getWireDeviceMisCode() {
		return wireDeviceMisCode;
	}

	public void setWireDeviceMisCode(String wireDeviceMisCode) {
		this.wireDeviceMisCode = wireDeviceMisCode;
	}

	//有线设备项目编号
	@Column(name = "wire_device_number")
	private String wireDeviceNumber;
	
	//有线管线MIS号
	@Column(name = "wireline_mis_code")
	private String wireLineMisCode;
	
	
	//有线设备MIS号
	@Column(name = "wiredevice_mis_code")
	private String wireDeviceMisCode;
	
	public String getAllTransferMaterialCost() {
		return allTransferMaterialCost;
	}

	public void setAllTransferMaterialCost(String allTransferMaterialCost) {
		this.allTransferMaterialCost = allTransferMaterialCost;
	}

	public String getTransferMaterialCost() {
		return transferMaterialCost;
	}

	public void setTransferMaterialCost(String transferMaterialCost) {
		this.transferMaterialCost = transferMaterialCost;
	}

	public String getFgysBuildConst() {
		return fgysBuildConst;
	}

	public void setFgysBuildConst(String fgysBuildConst) {
		this.fgysBuildConst = fgysBuildConst;
	}

	public String getFgysBudgetTotal() {
		return fgysBudgetTotal;
	}

	public void setFgysBudgetTotal(String fgysBudgetTotal) {
		this.fgysBudgetTotal = fgysBudgetTotal;
	}

	public String getFgysBuildUnit() {
		return fgysBuildUnit;
	}

	public void setFgysBuildUnit(String fgysBuildUnit) {
		this.fgysBuildUnit = fgysBuildUnit;
	}

	// 甲供材料费用
	@Column(name = "transfer_material_cost")
	private String transferMaterialCost;
	
	//覆盖延伸施工费用
	@Column(name = "fgys_build_const")
	private String fgysBuildConst;
	
	//覆盖延伸预算总金额
	@Column(name = "fgys_budget_total")
	private String fgysBudgetTotal;
	
	//覆盖延伸施工单位
	@Column(name = "fgys_build_unit")
	private String fgysBuildUnit;
	
	//项目完成时间
	@Column(name = "item_finished_time")
	private String itemFinishedTime;
	
	// 设计人员
	@Column(name = "transfer_designer")
	private String transferDesigner;
	
	// 传输施工单位
	@Column(name = "transfer_construction_unit")
	private String transferConstructionUnit;
	
	// 监理单位
	@Column(name = "transfer_supervisor_unit")
	private String transferSupervisorUnit;
	
	// 传输开工时间
	@Column(name = "transfer_start_date")
	private String transferStartDate;
	
	// 传输预计竣工时间
	@Column(name = "transfer_plan_complete_date")
	private String transferPlanCompleteDate;

	// 传输开工申请时间
	@Column(name = "transfer_start_apply_date")
	private String transferStartApplyDate;
	
	// 传输备注
	@Column(name = "transfer_remark")
	private String transferRemark;
	
	@Column(name = "ys_type")
	private String ysType;
	
	public String getWorkMenuNumberOne() {
		return workMenuNumberOne;
	}

	public void setWorkMenuNumberOne(String workMenuNumberOne) {
		this.workMenuNumberOne = workMenuNumberOne;
	}

	public String getWorkMenuNumberTwo() {
		return workMenuNumberTwo;
	}

	public void setWorkMenuNumberTwo(String workMenuNumberTwo) {
		this.workMenuNumberTwo = workMenuNumberTwo;
	}

	public String getAddressCode() {
		return addressCode;
	}

	public void setAddressCode(String addressCode) {
		this.addressCode = addressCode;
	}

	public String getInvestBelong() {
		return investBelong;
	}

	public void setInvestBelong(String investBelong) {
		this.investBelong = investBelong;
	}

	public String getCostBelong() {
		return costBelong;
	}

	public void setCostBelong(String costBelong) {
		this.costBelong = costBelong;
	}

	public Date getReplyDate() {
		return replyDate;
	}

	public void setReplyDate(Date replyDate) {
		this.replyDate = replyDate;
	}

	//投资归属
	@Column(name = "invest_belong")
	private String investBelong;
	
	//土建投资归属
	@Column(name = "civil_invest_belong")
	private String civilInvestBelong;
	
	//美化体投资归属
	@Column(name = "bodycare_invest_belong")
	private String bodycareInvestBelong;
	
	//覆盖延伸投资归属
	@Column(name = "fgys_invest_belong")
	private String fgysInvestBelong;
	
	//直放站投资归属
	@Column(name = "repeater_invest_belong")
	private String repeaterInvestBelong;
	
	//成本归属
	@Column(name = "cost_belong")
	private String costBelong;
	
	//土建成本归属
	//@Column(name = "civil_cost_belong")
	//private String civilCostBelong;
	
	//美化体成本归属
	//@Column(name = "bodycare_cost_belong")
	//private String bodycareCostBelong;
	
	//覆盖延伸成本归属
	//@Column(name = "fgys_cost_belong")
	//private String fgysCostBelong;
	
	//直放站成本归属
	//@Column(name = "repeater_cost_belong")
	//private String repeaterCostBelong;
	
	//批复日期	
	@Column(name = "reply_date")
	private Date   replyDate;
	
	//MIS创建	
	//@Column(name = "mis_create")
	//private String misCreate;
	
	//覆盖延伸MIS任务号
	@Column(name = "fgys_mis_code")
	private String fgysMisCode;
	
	public String getRepeaterMisCode() {
		return repeaterMisCode;
	}

	public void setRepeaterMisCode(String repeaterMisCode) {
		this.repeaterMisCode = repeaterMisCode;
	}

	//直放站MIS任务号
	@Column(name = "repeater_miscode")
	private String repeaterMisCode;
		
	//动力配套MIS任务号
	@Column(name = "horsepower_mis_code")
	private String horsePowerMisCode;

	public String getCivilInvestBelong() {
		return civilInvestBelong;
	}

	public void setCivilInvestBelong(String civilInvestBelong) {
		this.civilInvestBelong = civilInvestBelong;
	}

	public String getBodycareInvestBelong() {
		return bodycareInvestBelong;
	}

	public void setBodycareInvestBelong(String bodycareInvestBelong) {
		this.bodycareInvestBelong = bodycareInvestBelong;
	}

	public String getFgysInvestBelong() {
		return fgysInvestBelong;
	}

	public void setFgysInvestBelong(String fgysInvestBelong) {
		this.fgysInvestBelong = fgysInvestBelong;
	}

	public String getRepeaterInvestBelong() {
		return repeaterInvestBelong;
	}

	public void setRepeaterInvestBelong(String repeaterInvestBelong) {
		this.repeaterInvestBelong = repeaterInvestBelong;
	}
	/*
	public String getCivilCostBelong() {
		return civilCostBelong;
	}

	public void setCivilCostBelong(String civilCostBelong) {
		this.civilCostBelong = civilCostBelong;
	}
	 */
	/*
	public String getBodycareCostBelong() {
		return bodycareCostBelong;
	}

	public void setBodycareCostBelong(String bodycareCostBelong) {
		this.bodycareCostBelong = bodycareCostBelong;
	}*/

	/*
	public String getFgysCostBelong() {
		return fgysCostBelong;
	}

	public void setFgysCostBelong(String fgysCostBelong) {
		this.fgysCostBelong = fgysCostBelong;
	}*/

	/*
	public String getRepeaterCostBelong() {
		return repeaterCostBelong;
	}

	public void setRepeaterCostBelong(String repeaterCostBelong) {
		this.repeaterCostBelong = repeaterCostBelong;
	}*/

	public String getFgysMisCode() {
		return fgysMisCode;
	}

	public void setFgysMisCode(String fgysMisCode) {
		this.fgysMisCode = fgysMisCode;
	}

	public String getHorsePowerMisCode() {
		return horsePowerMisCode;
	}

	public void setHorsePowerMisCode(String horsePowerMisCode) {
		this.horsePowerMisCode = horsePowerMisCode;
	}

	public String getBizNumber() {
		return bizNumber;
	}

	public void setBizNumber(String bizNumber) {
		this.bizNumber = bizNumber;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public String getTelphone() {
		return telphone;
	}

	public void setTelphone(String telphone) {
		this.telphone = telphone;
	}

	public String getLon() {
		return lon;
	}

	public void setLon(String lon) {
		this.lon = lon;
	}

	public String getLat() {
		return lat;
	}

	public void setLat(String lat) {
		this.lat = lat;
	}

	public String getNewCreate() {
		return newCreate;
	}

	public void setNewCreate(String newCreate) {
		this.newCreate = newCreate;
	}

	public String getRelatedCode() {
		return relatedCode;
	}

	public void setRelatedCode(String relatedCode) {
		this.relatedCode = relatedCode;
	}

	public String getSiteNumber() {
		return siteNumber;
	}

	public void setSiteNumber(String siteNumber) {
		this.siteNumber = siteNumber;
	}

	public String getSiteName() {
		return siteName;
	}

	public void setSiteName(String siteName) {
		this.siteName = siteName;
	}

	public String getBsc() {
		return bsc;
	}

	public void setBsc(String bsc) {
		this.bsc = bsc;
	}

	public String getMainSignal() {
		return mainSignal;
	}

	public void setMainSignal(String mainSignal) {
		this.mainSignal = mainSignal;
	}

	public String getLiftSignal() {
		return liftSignal;
	}

	public void setLiftSignal(String liftSignal) {
		this.liftSignal = liftSignal;
	}

	public Integer getLiftNumber() {
		return liftNumber;
	}

	public void setLiftNumber(Integer liftNumber) {
		this.liftNumber = liftNumber;
	}

	public Integer getLiftTopFloor() {
		return liftTopFloor;
	}

	public void setLiftTopFloor(Integer liftTopFloor) {
		this.liftTopFloor = liftTopFloor;
	}

	public String getUnderParkSignal() {
		return underParkSignal;
	}

	public void setUnderParkSignal(String underParkSignal) {
		this.underParkSignal = underParkSignal;
	}

	public Integer getUnderParkNumber() {
		return underParkNumber;
	}

	public void setUnderParkNumber(Integer underParkNumber) {
		this.underParkNumber = underParkNumber;
	}

	public Integer getUnderParkCarNumber() {
		return underParkCarNumber;
	}

	public void setUnderParkCarNumber(Integer underParkCarNumber) {
		this.underParkCarNumber = underParkCarNumber;
	}

	public String getResolveMethod() {
		return resolveMethod;
	}

	public void setResolveMethod(String resolveMethod) {
		this.resolveMethod = resolveMethod;
	}

	public Float getCoverArea() {
		return coverArea;
	}

	public void setCoverArea(Float coverArea) {
		this.coverArea = coverArea;
	}

	public String getEmergencyLevel() {
		return emergencyLevel;
	}

	public void setEmergencyLevel(String emergencyLevel) {
		this.emergencyLevel = emergencyLevel;
	}

	public String getPath() {
		return path;
	}

	public void setPath(String path) {
		this.path = path;
	}

	public String getRemark() {
		return remark;
	}

	public void setRemark(String remark) {
		this.remark = remark;
	}

	public String getNetType() {
		return netType;
	}

	public void setNetType(String netType) {
		this.netType = netType;
	}

	public String getResolveContent() {
		return resolveContent;
	}

	public void setResolveContent(String resolveContent) {
		this.resolveContent = resolveContent;
	}

	public int getProcessInstanceId() {
		return processInstanceId;
	}

	public void setProcessInstanceId(int processInstanceId) {
		this.processInstanceId = processInstanceId;
	}
	
	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	public String getProjectTerm() {
		return projectTerm;
	}

	public void setProjectTerm(String projectTerm) {
		this.projectTerm = projectTerm;
	}

	public String getShareStatus() {
		return shareStatus;
	}

	public void setShareStatus(String shareStatus) {
		this.shareStatus = shareStatus;
	}

	@OneToOne
	@JoinColumn(name="area_type_id")  
	public Dictionary getAreaType() {
		return areaType;
	}

	public void setAreaType(Dictionary areaType) {
		this.areaType = areaType;
	}
	
	@OneToOne
	@JoinColumn(name="area_id")  
	public Dictionary getArea() {
		return area;
	}
	
	
	public void setArea(Dictionary area) {
		this.area = area;
	}

	@OneToOne
	@JoinColumn(name="project_type_id") 
	public Dictionary getProjectType() {
		return projectType;
	}

	public void setProjectType(Dictionary projectType) {
		this.projectType = projectType;
	}

	@OneToOne
	@JoinColumn(name="term_id")  
	public Dictionary getTerm() {
		return term;
	}

	public void setTerm(Dictionary term) {
		this.term = term;
	}
	
	@OneToOne
	@JoinColumn(name="factory_id")  
	public Dictionary getFactory() {
		return factory;
	}

	public void setFactory(Dictionary factory) {
		this.factory = factory;
	}
	/*
	public String getManufacturer() {
		return manufacturer;
	}

	public void setManufacturer(String manufacturer){
		this.manufacturer = manufacturer;
	}
	*/
	/*
	@OneToOne
	@JoinColumn(name = "manufacturers_id")  
	public Dictionary getManufacturers() {
		return manufacturers;
	}

	public void setManufacturers(Dictionary manufacturers) {
		this.manufacturers = manufacturers;
	}*/

	/*@OneToOne
	@JoinColumn(name="gsm_term_id")  
	public Dictionary getGsmTerm() {
		return gsmTerm;
	}

	public void setGsmTerm(Dictionary gsmTerm) {
		this.gsmTerm = gsmTerm;
	}*/
	/*
	@OneToOne
	@JoinColumn(name="td_term_id")  
	public Dictionary getTdTerm() {
		return tdTerm;
	}

	public void setTdTerm(Dictionary tdTerm) {
		this.tdTerm = tdTerm;
	}

	@OneToOne
	@JoinColumn(name="wlan_term_id")  
	public Dictionary getWlanTerm() {
		return wlanTerm;
	}

	public void setWlanTerm(Dictionary wlanTerm) {
		this.wlanTerm = wlanTerm;
	}

	@OneToOne
	@JoinColumn(name="lte_term_id")  
	public Dictionary getLteTerm() {
		return lteTerm;
	}

	public void setLteTerm(Dictionary lteTerm) {
		this.lteTerm = lteTerm;
	}*/
	//	@OneToOne
//	@JoinColumn(name="upload_type_id", referencedColumnName = "id")  
	public String getUploadType() {
		return uploadType;
	}

	public String getGsmTerm() {
		return gsmTerm;
	}

	public void setGsmTerm(String gsmTerm) {
		this.gsmTerm = gsmTerm;
	}

	public void setUploadType(String uploadType) {
		this.uploadType = uploadType;
	}
	

	public RoomDataType getDataType() {
		return dataType;
	}

	public void setDataType(RoomDataType dataType) {
		this.dataType = dataType;
	}
	
	@OneToMany
	@JoinTable(name = "ROOM_PROJECT_ATTACHMENT", joinColumns = @JoinColumn(name = "ROOM_PROJECT_ID"), inverseJoinColumns = @JoinColumn(name = "ATTACHMENT_ID"))   
	public List<Attachment> getAttachments() {
		return attachments;
	}
	public void setAttachments(List<Attachment> attachments) {
		this.attachments = attachments;
	}

	public String getComplaint() {
		return complaint;
	}

	public void setComplaint(String complaint) {
		this.complaint = complaint;
	}
	
	public Boolean getPracticalEarly() {
		return practicalEarly;
	}

	public void setPracticalEarly(Boolean practicalEarly) {
		this.practicalEarly = practicalEarly;
	}

	public String getBuildType() {
		return buildType;
	}

	public void setBuildType(String buildType) {
		this.buildType = buildType;
	}

	public String getSiteAddress() {
		return siteAddress;
	}

	public void setSiteAddress(String siteAddress) {
		this.siteAddress = siteAddress;
	}

	public Boolean getNeedCivil() {
		return needCivil;
	}

	public void setNeedCivil(Boolean needCivil) {
		this.needCivil = needCivil;
	}

	public String getCivilCost() {
		return civilCost;
	}

	public void setCivilCost(String civilCost) {
		this.civilCost = civilCost;
	}
	/*
	public Float getMaterialCost() {
		return materialCost;
	}

	public void setMaterialCost(Float materialCost) {
		this.materialCost = materialCost;
	}
 	*/
	/*
	public Float getConstructionCost() {
		return constructionCost;
	}

	public void setConstructionCost(Float constructionCost) {
		this.constructionCost = constructionCost;
	}*/
	/*
	public String getConstructionUnit() {
		return constructionUnit;
	}

	public void setConstructionUnit(String constructionUnit) {
		this.constructionUnit = constructionUnit;
	}
	 */
	public String getBodycareType() {
		return bodycareType;
	}

	public void setBodycareType(String bodycareType) {
		this.bodycareType = bodycareType;
	}

	public String getBodycareFactory() {
		return bodycareFactory;
	}

	public void setBodycareFactory(String bodycareFactory) {
		this.bodycareFactory = bodycareFactory;
	}

	public String getBodycareCost() {
		return bodycareCost;
	}

	public void setBodycareCost(String bodycareCost) {
		this.bodycareCost = bodycareCost;
	}

	public Boolean getNewTransfer() {
		return newTransfer;
	}

	public void setNewTransfer(Boolean newTransfer) {
		this.newTransfer = newTransfer;
	}
	
	public String getZywNumber() {
		return zywNumber;
	}

	public void setZywNumber(String zywNumber) {
		this.zywNumber = zywNumber;
	}

	public String getInvestDispatchOrder() {
		return investDispatchOrder;
	}

	public void setInvestDispatchOrder(String investDispatchOrder) {
		this.investDispatchOrder = investDispatchOrder;
	}

	public String getTransferProjectName() {
		return transferProjectName;
	}

	public void setTransferProjectName(String transferProjectName) {
		this.transferProjectName = transferProjectName;
	}

	public String getTransferProjectNumber() {
		return transferProjectNumber;
	}

	public void setTransferProjectNumber(String transferProjectNumber) {
		this.transferProjectNumber = transferProjectNumber;
	}

	public String getTransferMisNumber() {
		return transferMisNumber;
	}

	public void setTransferMisNumber(String transferMisNumber) {
		this.transferMisNumber = transferMisNumber;
	}

	public String getTransferProjectBelong() {
		return transferProjectBelong;
	}

	public void setTransferProjectBelong(String transferProjectBelong) {
		this.transferProjectBelong = transferProjectBelong;
	}

	public String getTransferBuildScale() {
		return transferBuildScale;
	}

	public void setTransferBuildScale(String transferBuildScale) {
		this.transferBuildScale = transferBuildScale;
	}

	public Float getTransferBudget() {
		return transferBudget;
	}

	public void setTransferBudget(Float transferBudget) {
		this.transferBudget = transferBudget;
	}

	public String getTransferOwnerMaterial() {
		return transferOwnerMaterial;
	}

	public void setTransferOwnerMaterial(String transferOwnerMaterial) {
		this.transferOwnerMaterial = transferOwnerMaterial;
	}

	public String getTransferDesigner() {
		return transferDesigner;
	}

	public void setTransferDesigner(String transferDesigner) {
		this.transferDesigner = transferDesigner;
	}

	public String getTransferConstructionUnit() {
		return transferConstructionUnit;
	}

	public void setTransferConstructionUnit(String transferConstructionUnit) {
		this.transferConstructionUnit = transferConstructionUnit;
	}

	public String getTransferSupervisorUnit() {
		return transferSupervisorUnit;
	}

	public void setTransferSupervisorUnit(String transferSupervisorUnit) {
		this.transferSupervisorUnit = transferSupervisorUnit;
	}

	public String getTransferStartDate() {
		return transferStartDate;
	}

	public void setTransferStartDate(String transferStartDate) {
		this.transferStartDate = transferStartDate;
	}

	public String getTransferPlanCompleteDate() {
		return transferPlanCompleteDate;
	}

	public void setTransferPlanCompleteDate(String transferPlanCompleteDate) {
		this.transferPlanCompleteDate = transferPlanCompleteDate;
	}

	public String getTransferStartApplyDate() {
		return transferStartApplyDate;
	}

	public void setTransferStartApplyDate(String transferStartApplyDate) {
		this.transferStartApplyDate = transferStartApplyDate;
	}

	public String getTransferRemark() {
		return transferRemark;
	}

	public void setTransferRemark(String transferRemark) {
		this.transferRemark = transferRemark;
	}

	public String getYsType() {
		return ysType;
	}

	public void setYsType(String ysType) {
		this.ysType = ysType;
	}
	
	@Transient
	public boolean getWlan() {
		return this.netType == null ? false : this.netType.toLowerCase().indexOf("wlan") >= 0;
	}
	
	@Transient
	public boolean getGsm() {
		return this.netType == null ? false : this.netType.toLowerCase().indexOf("gsm") >= 0;
	}
	
	@Transient
	public boolean getTd() {
		return this.netType == null ? false : this.netType.toLowerCase().indexOf("td") >= 0;
	}
	
	@Transient
	public boolean getLte() {
		return this.netType == null ? false : this.netType.toLowerCase().indexOf("lte") >= 0;
	}
	
	@Transient
	public boolean getCityArea(){
		Long[] cityArray = new Long[]{2l,3l,4l,5l,6l,7l}; 
		List<Long> cityAreaList = Arrays.asList(cityArray);
		if(cityAreaList.contains(this.area.getId())){
			return true;
		}else{
			return false;
		}
	}
	
	@Transient
	public String getRegion(){
		String regionType = null;
		//东区
		Long[] regionEastArray = new Long[]{3l,6l,7l,10l}; 
		List<Long> regionEastList = Arrays.asList(regionEastArray);
		//南区
		Long[] regionSouthArray = new Long[]{9l,11l,12l,13l}; 
		List<Long> regionSouthList = Arrays.asList(regionSouthArray);
		//西区
		Long[] regionWestArray = new Long[]{2l,8l,14l}; 
		List<Long> regionWestList = Arrays.asList(regionWestArray);
		//中区
		Long[] regionMiddleArray = new Long[]{4l,5l}; 
		List<Long> regionMiddleList = Arrays.asList(regionMiddleArray);
		
		if(regionEastList.contains(this.area.getId())){
			regionType = "EAST";
		}else if(regionSouthList.contains(this.area.getId())){
			regionType = "SOUTH";
		}else if(regionWestList.contains(this.area.getId())){
			regionType = "WEST";
		}else if(regionMiddleList.contains(this.area.getId())){
			regionType = "MIDDLE";
		}
		return regionType;
	}
	
	@Transient
	public boolean getTownArea(){
		Long[] cityArray = new Long[]{8l,9l,10l,11l,12l,13l}; 
		List<Long> cityAreaList = Arrays.asList(cityArray);
		if(cityAreaList.contains(this.area.getId())){
			return true;
		}else{
			return false;
		}
	}
	
	public String getGsmSiteNumber() {
		return gsmSiteNumber;
	}

	public void setGsmSiteNumber(String gsmSiteNumber) {
		this.gsmSiteNumber = gsmSiteNumber;
	}

	public String getGsmBuildType() {
		return gsmBuildType;
	}

	public void setGsmBuildType(String gsmBuildType) {
		this.gsmBuildType = gsmBuildType;
	}

	public String getGsmBsc() {
		return gsmBsc;
	}

	public void setGsmBsc(String gsmBsc) {
		this.gsmBsc = gsmBsc;
	}

	public String getTdSiteNumber() {
		return tdSiteNumber;
	}

	public void setTdSiteNumber(String tdSiteNumber) {
		this.tdSiteNumber = tdSiteNumber;
	}

	public String getTdBuildType() {
		return tdBuildType;
	}

	public void setTdBuildType(String tdBuildType) {
		this.tdBuildType = tdBuildType;
	}

	public String getTdRnc() {
		return tdRnc;
	}

	public void setTdRnc(String tdRnc) {
		this.tdRnc = tdRnc;
	}


	public String getWlanSiteNumber() {
		return wlanSiteNumber;
	}

	public String getWlanBuildType() {
		return wlanBuildType;
	}

	public String getWlanAc() {
		return wlanAc;
	}

	public void setWlanSiteNumber(String wlanSiteNumber) {
		this.wlanSiteNumber = wlanSiteNumber;
	}

	public void setWlanBuildType(String wlanBuildType) {
		this.wlanBuildType = wlanBuildType;
	}

	public void setWlanAc(String wlanAc) {
		this.wlanAc = wlanAc;
	}

	public String getLteSiteNumber() {
		return lteSiteNumber;
	}

	public void setLteSiteNumber(String lteSiteNumber) {
		this.lteSiteNumber = lteSiteNumber;
	}

	public String getLteBuildType() {
		return lteBuildType;
	}

	public void setLteBuildType(String lteBuildType) {
		this.lteBuildType = lteBuildType;
	}

	public String getLteBsc() {
		return lteBsc;
	}

	public void setLteBsc(String lteBsc) {
		this.lteBsc = lteBsc;
	}

	/**
	 * 土建预算合计
	 * 
	 * @return
	 */
	@Transient
	public String getCivilBudget() {
		float total = 0f;
		if (civilCost != null) {
			//total += civilCost;
		}
		/*
		if (materialCost != null) {
			total += materialCost;
		}
		*/
		/*
		if (constructionCost != null) {
			total += constructionCost;
		}*/
		return null;
	}

	@Override
	public String toString() {
		return ToStringBuilder.reflectionToString(this);
	}
	
}